/**
 * <strong>Title : MaterialTypeDao.java<br>
 * </strong> <strong>Package : cn.b.sky.mes.cm.dao<br>
 * </strong> <strong>Description : </strong>@类注释说明写在此处@<br>
 * <strong>Create on : 2015年9月24日 上午11:25:55<br>
 * </strong>
 * <p>
 * @author dapeng.li<br>
 * @version <strong>v1.0.0</strong><br>
 * <br>
 *          <strong>修改历史:</strong><br>
 *          修改人 | 修改日期 | 修改描述<br>
 *          -------------------------------------------<br>
 * <br>
 * <br>
 */
package cn.b.sky.mes.cm.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import cn.b.sky.mes.cm.model.MaterialType;
import cn.b.sky.mes.cm.model.condition.MaterialTypeCondition;

/**
 * <strong>Title : MaterialTypeDao.java<br></strong>
 * <strong>Package : cn.b.sky.mes.cm.dao<br></strong>
 * <strong>Description : </strong>物料类型持久层<br> 
 * <strong>Create on : 2015年9月24日 上午11:25:55<br></strong>
 * <p>
 * @author dapeng.li<br>
 * @version <strong>v1.0.0</strong><br>
 * <br>
 * <strong>修改历史:</strong><br>
 * 修改人 | 修改日期 | 修改描述<br>
 * -------------------------------------------<br>
 * <br>
 * <br>
 */
public interface MaterialTypeDao {

  /**
   * <strong>Title : getMaterialTypeExactCount<br></strong>
   * <strong>Description : </strong>按条件查询同一工厂下物料类型总数<br> 
   * <strong>Create on : 2015年9月24日 下午7:10:11<br></strong>
   * <p>
   * @param materialTypeCondition
   * @return
   * int
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public int getMaterialTypeExactCount(MaterialTypeCondition materialTypeCondition);

  /**
   * <strong>Title : getMaterialType<br></strong>
   * <strong>Description : </strong>按条件查询物料类型实体<br> 
   * <strong>Create on : 2015年9月24日 下午7:16:32<br></strong>
   * <p>
   * @param materialTypeCondition
   * @return
   * MaterialType
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public MaterialType getMaterialType(MaterialTypeCondition materialTypeCondition);

  /**
   * <strong>Title : getRefFromMaterial<br></strong>
   * <strong>Description : </strong>验证在cm_Material 表中是否无关联数据<br> 
   * <strong>Create on : 2015年9月25日 上午9:32:05<br></strong>
   * <p>
   * @param materialType
   * @return
   * int
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   * @param siteCode 
   */
  public int validateRefFromMaterial(@Param("materialTypeCode") String materialTypeCode,
      @Param("siteCode") String siteCode);

  /**
   * <strong>Title : selectMaterialTypeList<br></strong>
   * <strong>Description : </strong>模糊查询返回物料类型列表<br> 
   * <strong>Create on : 2015年9月25日 下午3:29:00<br></strong>
   * <p>
   * @param materialTypeCondition
   * @return
   * List<MaterialType>
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public List<MaterialType> selectMaterialTypeList(MaterialTypeCondition materialTypeCondition);

  /**
   * <strong>Title : getMaterialTypeCount<br></strong>
   * <strong>Description : </strong>模糊查询返回物料类型总数<br> 
   * <strong>Create on : 2015年9月25日 下午3:29:09<br></strong>
   * <p>
   * @param materialTypeCondition
   * @return
   * int
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public int getMaterialTypeCount(MaterialTypeCondition materialTypeCondition);

  /**
   * <strong>Title : getMaterialType<br></strong>
   * <strong>Description : </strong>根据id获取物料类型实体<br> 
   * <strong>Create on : 2015年9月25日 下午3:29:17<br></strong>
   * <p>
   * @param id
   * @return
   * MaterialType
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   * @param siteCode 
   */
  public MaterialType getMaterialType(@Param("materialTypeCode") String materialTypeCode,
      @Param("siteCode") String siteCode);

  /**
   * <strong>Title : insertMaterialType<br></strong>
   * <strong>Description : </strong>@插入物料类型实体@<br> 
   * <strong>Create on : 2015年9月25日 下午3:29:22<br></strong>
   * <p>
   * @param materialType
   * void
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public void insertMaterialType(MaterialType materialType);

  /**
   * <strong>Title : updateMaterialType<br></strong>
   * <strong>Description : </strong>@更新物料类型实体@<br> 
   * <strong>Create on : 2015年9月25日 下午3:29:30<br></strong>
   * <p>
   * @param materialType
   * void
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public void updateMaterialType(MaterialType materialType);

  /**
   * <strong>Title : deleteMaterialTypes<br></strong>
   * <strong>Description : </strong>@删除物料类型实体@<br> 
   * <strong>Create on : 2015年9月25日 下午3:29:34<br></strong>
   * <p>
   * @param materialTypes
   * void
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public void deleteMaterialType(@Param("materialType") String materialType, @Param("siteCode") String siteCode);

  /**
   * 
   * <strong>Title : selectAllUnLockeMaterialTypes<br></strong>
   * <strong>Description : </strong>查询所有未锁定的物料类型<br> 
   * <strong>Create on : 2015-9-30 下午04:00:47<br></strong>
   * <p>
   * @param siteCode
   * MaterialType
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public List<MaterialType> selectAllUnLockeMaterialTypes(String siteCode);

}
